﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;

namespace PersistenciaAccessLIB
{
    public class Persistencia
    {
        private string _conexion;

        public string Conexion
        {
            get { return _conexion; }            
        }

        /// <summary>
        /// Constructor de la clase
        /// </summary>
        /// <param name="conexion">Cadena de conexion a la base de datos</param>
        public Persistencia(string conexion) 
        {
            this._conexion = conexion;
        }

        /// <summary>
        /// Ejecuta un query sobre la base de datos
        /// </summary>
        /// <param name="query">Cadena sql a ejecutar</param>
        public void ExecuteNonQuery(string query)
        {
            //Se obtiene el objeto connection
            OleDbConnection conn = new OleDbConnection(this.Conexion);
            
            OleDbCommand com = new OleDbCommand();
            com.CommandType = CommandType.Text;
            com.CommandText = query;

            try
            {
                conn.Open();
                com.Connection = conn;
                com.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception("Error al ejecutar el comando (en PersistenciaAccessLIB.Persistencia.EjecutarQuery): " + ex.Message);
            }
            finally 
            {
                conn.Close();
            }
        }

        /// <summary>
        /// Ejecuta un query sobre la base de datos y retorna un dataset con los resultados
        /// </summary>
        /// <param name="query">Cadena sql a ejecutar</param>
        /// <returns></returns>
        public DataSet ExecuteDataSet(string query)
        {
            //Se obtiene el objeto connection
            OleDbConnection conn = new OleDbConnection(this.Conexion);

            DataSet dts = new DataSet();

            try
            {
                //conn.Open();                
                OleDbDataAdapter da = new OleDbDataAdapter(query, conn);
                da.Fill(dts);
                return dts;
            }
            catch (Exception ex)
            {
                throw new Exception("Error al ejecutar el comando (en PersistenciaAccessLIB.Persistencia.ExecuteDataSet): " + ex.Message);
            }
            finally
            {
                //conn.Close();
            }

        }


        #region "Métodos privados"
        #endregion


    }
}
